#ifndef SUBDIVISION_OF_POLYGON_H_
#define SUBDIVISION_OF_POLYGON_H_
#include<stdlib.h>
#include<stdio.h>
#include<Math/LB_Math.h>
#ifndef SAFE_SQRT
#define SAFE_SQRT(x) (x>=0?sqrt(x):sqrt(-x))
#endif
#ifndef SAFE_FREE
#define SAFE_FREE(x) if(x!=NULL){free(x);x=NULL;}
#endif
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
#ifdef __cplusplus
extern "C"{

#endif


double * compute_plane_normal_of_jordan_curve(double** v,int len );

//double* compute_plane_normal_of_jordan_curve_from_node(Node*);

int is_acute_angle_in_polygon(double**v,int len,double*n,int at);

int is_subdivision_of_polygon_legal_angle1(double **v,int len,double*n,int an);


//
void subdivision_of_polygon(double ** v,int len,int ** s);

//
// 优化过的多边形区域网格剖分
// 主要对那些多边形区域的边界处在同一直线上的情况进行剖分优化
// 上面是没有优化的网格剖分

void optimization_subdivision_of_polygon(double** v,int len ,int **s);



//要写一个带亏格的带边平面的网格剖分算法。
//原理和多变形区域网格剖分算法一样。递归算法。带边界区域的网格剖分，每次创建一个三角形（必存在合适的），剩余的
//区域再找一个三角形。

//void subdivision_of_polygon_with_edges();



#ifdef __cplusplus
}
#endif

#endif